﻿//
//
// 版权所有 (c) 2021-2023 JR  
//
// 特此免费授予获得本软件的任何人以处理本软件的权利，但须遵守以下条件：在所有副本或重要部分的软件中必须包括上述版权声明和本许可声明。
//
// 软件按“原样”提供，不提供任何形式的明示或暗示的保证，包括但不限于对适销性、适用性和非侵权的保证。
// 在任何情况下，作者或版权持有人均不对任何索赔、损害或其他责任负责，无论是因合同、侵权或其他方式引起的，与软件或其使用或其他交易有关。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EMC.VISITOR.Core;
/// <summary>
/// 数据迁移表
/// </summary>
[SugarTable(null, "数据迁移表")]
[SysTable]
public class SysDataTransfer : EntityBase
{
    /// <summary>
    /// 源数据库配置编号
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "源数据库配置编号")]
    public string SourceConfigId { get; set; }
    /// <summary>
    /// 源数据库名称
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "源数据库名称")]
    public string SourceDbName { get; set; }
    /// <summary>
    /// 源数据库类型
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "源数据库类型")]
    public MyDbType SourceDbType { get; set; }
    /// <summary>
    /// 源数据链接字符串
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "源数据链接字符串")]
    public string SourceConnectionString { get; set; }

    /// <summary>
    /// 需要迁移源表的特性
    /// </summary>
    [SugarColumn(IsNullable = true,IsJson =true, ColumnDescription = "需要迁移源表的特性")]
    public List<string> SourceTableAttribute { get; set; } = new List<string>();

    /// <summary>
    /// 需要排除的表 （排除此集合中的所有表，其它表都迁移）
    /// </summary>
    [SugarColumn(IsNullable = true, IsJson = true, ColumnDescription = "需要排除的表")]
    public virtual List<string> SourceExcludeTables { get; set; } = new List<string>();

    /// <summary>
    /// 只更新的表 （只更新此集合中的数据表）
    /// </summary>
    [SugarColumn(IsNullable = true, IsJson = true, ColumnDescription = "只更新的表")]
    public virtual List<string> SourceOnlyTransferTables { get; set; } = new List<string>();
    /// <summary>
    /// 是否清空目标表
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "是否清空目标表")]
    public bool ClearTargetTableFlag { get; set; }

    /// <summary>
    /// 目标数据库配置编码
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "目标数据库配置编码")]
    public string TargetConfigId { get; set; }
    /// <summary>
    /// 目标数据库名称
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "目标数据库名称")]
    public string TargetDbName { get; set; }
    /// <summary>
    /// 目标数据库类型
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "目标数据库类型")]
    public MyDbType TargetDbType { get; set; }
    /// <summary>
    /// 目标数据链接字符串
    /// </summary>
    [SugarColumn(IsNullable = true, ColumnDescription = "目标数据链接字符串")]
    public string TargetConnectionString { get; set; }
    [SugarColumn(ColumnDescription = "迁移日志内容",IsNullable =true, ColumnDataType = StaticConfig.CodeFirst_BigString)]
    public string Description { get; set; }


}
